<HTML>
<HEAD>
<TITLE>
RecursoDeAlmacenamiento.h
</TITLE>
</HEAD>
<BODY>
<PRE>
<font color="blue">#ifndef</font> RECURSO_DE_ALMACENAMIENTO_H_
<font color="blue">#define</font> RECURSO_DE_ALMACENAMIENTO_H_

<font color="blue">#include</font> <font color="maroon">"../classes/almacenamiento/AlmacenamientoBuffer.h"</font>
<font color="blue">#include</font> <font color="maroon">"../classes/almacenamiento/AlmacenamientoDisco.h"</font>
<font color="blue">#include</font> <font color="maroon">"../classes/almacenamiento/Almacenamiento.h"</font>
<font color="blue">#include</font> <font color="maroon">"../enums.inc.h"</font>
<font color="blue">#include</font> <font color="maroon">"Dato.h"</font>
<font color="blue">#include</font> <font color="maroon">"Compuesto.h"</font>
<font color="blue">#include</font> <font color="maroon">"etg_almacenamiento.inc.h"</font>
<font color="blue">#include</font> <font color="maroon">"../classes/etg_recursos/EtgRecEscrituraDirecta.h"</font>
<font color="blue">#include</font> <font color="maroon">"../classes/etg_recursos/EtgRecUnAlmacenamiento.h"</font>
<font color="blue">#include</font> <font color="maroon">"../classes/etg_recursos/EstrategiaRecurso.h"</font>
<font color="blue">#include</font> <font color="maroon">&#60;vector&#62;</font>

<font color="blue">using</font> <font color="blue">namespace</font> std;


<font color="green">/**
 * Desde esta clase se hace los controles sobre las distintas partes: almacenamiento y su estrategia, 
 * estrategias de indice y estrategia de recurso de almacenamineto.
 * 
 * */</font>
<font color="blue">class</font> RecursoDeAlmacenamiento<font color="black">{</font>
        
    <font color="blue">private</font><font color="black">:</font>
    
        <font color="green">/*
        Etg_Almacenamiento *estrategiaAlm;
        
        TipoMemoria tipoMem;
        */</font>
        EstrategiaRecurso <font color="black">*</font>recurso;
        Almacenamiento <font color="black">*</font><font color="black">*</font>almacenamiento; <font color="green">//puede tener 1 o 2</font>
        EstrategiaIndice <font color="black">*</font>indice;
        PrimaryKey <font color="black">*</font>PK;
        <font color="blue">char</font> <font color="black">*</font>path;
        <font color="blue">void</font> <font color="black">*</font>ptrBuff;
    
        <font color="blue">void</font> definirAlmacenemiento<font color="black">(</font>TipoAlmacenamiento tipo<font color="black">)</font>;
        <font color="blue">void</font> definirEstrategia<font color="black">(</font>TipoEstrategia tipoE, TipoAlmacenamiento tipoA<font color="black">)</font>;
        <font color="blue">void</font> definirIndice<font color="black">(</font>TipoIndice tipoI,PrimaryKey <font color="black">*</font>PK<font color="black">)</font>;
            
    <font color="blue">public</font><font color="black">:</font>
        <font color="green">// archivo</font>
        RecursoDeAlmacenamiento<font color="black">(</font><font color="blue">char</font> <font color="black">*</font>path, TipoAlmacenamiento tipoA, TipoEstrategia tipoE, TipoMemoria tipoM, TipoIndice tipoI ,  vector<font color="black">&#60;</font>Dato<font color="black">*</font><font color="black">&#62;</font> listaDatos,PrimaryKey <font color="black">*</font>PK<font color="black">)</font>;

        <font color="green">// buffer</font>
        RecursoDeAlmacenamiento<font color="black">(</font><font color="blue">unsigned</font> <font color="blue">int</font> tamBuffer, TipoAlmacenamiento tipoA, TipoEstrategia tipoE, TipoMemoria tipoM, TipoIndice tipoI ,  vector<font color="black">&#60;</font>Dato<font color="black">*</font><font color="black">&#62;</font> listaDatos,PrimaryKey <font color="black">*</font>PK<font color="black">)</font>;
        
        <font color="green">// ambos</font>
        RecursoDeAlmacenamiento<font color="black">(</font><font color="blue">char</font> <font color="black">*</font>path, <font color="blue">unsigned</font> <font color="blue">int</font> tamBuffer, TipoAlmacenamiento tipoA, TipoEstrategia tipoE, TipoMemoria tipoM, TipoIndice tipoI ,  vector<font color="black">&#60;</font>Dato<font color="black">*</font><font color="black">&#62;</font> listaDatos,PrimaryKey <font color="black">*</font>PK<font color="black">)</font>;
        
        
        
        <font color="green">/*
         * Metodos/operaciones del usuario sobre el toolkit...
        */</font>
        
        
        <font color="green">/**
         * Permite realizar inserciones individuales de datos nuevos.
         * 
         * @param Dato* dato: contiene el dato a insertar
         *  
         * */</font>
        <font color="blue">void</font> insertar<font color="black">(</font>Dato <font color="black">*</font>dato<font color="black">)</font>;
        
        <font color="green">/**
         * Permite realizar modificaciones  a los datos ya cargados al toolkit.
         * 
         * @param Dato* dato: contiene el dato a modificar
         *  
         * */</font>
        <font color="blue">void</font> modificar<font color="black">(</font>Dato <font color="black">*</font>datoAux<font color="black">)</font>;
        
        <font color="green">/**
         * Permite eliminar datos existentes en el toolkit.
         * 
         * @param Dato* dato: el dato contiene solo los campos necesarios para identificarlo
         *  
         * */</font>
        <font color="blue">void</font> eliminar<font color="black">(</font>Dato <font color="black">*</font>datoAux<font color="black">)</font>;<font color="green">//aca el dato tambien??</font>
        
        <font color="green">/**
         * Permite eliminar datos existentes en el toolkit.
         * 
         * @param Dato* datoAux:  el dato contiene solo los campos necesarios para identificarlo
         *  
         * */</font>
        <font color="blue">void</font> leer<font color="black">(</font>Dato <font color="black">*</font>datoAux<font color="black">)</font>;<font color="green">//aca el dato tambien??</font>
        
        <font color="green">/**
         * Permite listar datos desde la aquel cuya clave es la inicial hasta encontrar el final.
         * 
         * @param Dato* dini: el dato contiene solo los campos necesarios para identificarlo
         * @param Dato* dfin: el dato contiene solo los campos necesarios para identificarlo
         *  
         * */</font>
        <font color="blue">void</font> listar<font color="black">(</font>Dato <font color="black">*</font>dini, Dato <font color="black">*</font>dfin<font color="black">)</font>;
        
        ~RecursoDeAlmacenamiento<font color="black">(</font><font color="black">)</font>;
        
    
<font color="black">}</font>;

<font color="blue">#endif</font> <font color="green">/*RECURSODEALMACENAMIENTO_H_*/</font>


</PRE>
</BODY>
</HTML>
